package cn.edu.njtc.interceptor;

import cn.edu.njtc.entity.pojo.Permission;
import cn.edu.njtc.entity.vo.AdminPermissionVo;
import cn.edu.njtc.service.PermissionService;
import cn.edu.njtc.service.UserService;
import cn.edu.njtc.util.JWTUtil;
import jakarta.servlet.http.HttpServletRequest;
import jakarta.servlet.http.HttpServletResponse;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.core.MethodParameter;
import org.springframework.stereotype.Component;
import org.springframework.web.method.HandlerMethod;
import org.springframework.web.servlet.HandlerInterceptor;

import java.lang.reflect.Parameter;
import java.util.List;


/**
 * SpringMVC封装了拦截器的使用接口HandlerInterceptor
 * preHandle: 控制器方法被执行前执行的操作
 * request: 请求对象，获取HTTP中的标准请求内容（请求头，请求体，请求参数，请求的字符集）
 * response: 响应对象，获取HTTP中的标准响应内容（响应头，响应体，状态码）
 * handler: 控制器方法对象，获取到控制器方法的名称、返回值类型、参数列表等信息
 */

@Component
public class AuthInterceptor implements HandlerInterceptor {

    @Autowired
    private PermissionService permissionService;

    @Override
    public boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object handler) throws Exception {
//        System.out.println("--------");

        JWTUtil.verifyJWT(request.getHeader("token"));
//        String name = null;
//
//        if (handler instanceof HandlerMethod) {
//
//
//            AdminPermissionVo adminPermissionVo = permissionService.selectPermission(phone);
//
//            List<Permission> permissions = adminPermissionVo.getPermissions();
//
//            for (Permission permission : permissions) {
//                if (permission.getPermUrl().equals(requestURI)) {
//                    return true;
//                }
//            }
//            }


//        permissionService.selectPermission("")

//        System.out.println("AuthInterceptor preHandle触发了");
        // 返回true表示拦截器放行，返回false表示拦截器拦截，还可以选择抛出异常
        return true;
    }
}
